Blockchains allow a network of users to make a distributed ledger of data and share the data among the other users or nodes in the network. Unlike traditional database structures, the blockchain ledger is maintained by a multitude of independent nodes spread across a large distributed network. When a transaction is recorded into a block within the blockchain, it is very difficult, if not impossible, to change or remove that data since the data is stored in more than one node in the distributed network. Each of these blocks typically includes a cryptographic hash of the previous block, a timestamp, and the transaction data. Moreover, any data added into the blockchain requires a consensus (e.g., a majority) of nodes to agree to the addition. This distribution of control to modify from the blockchain creates a trusted immutable ledger recording transactions or data.
Public blockchains have no restrictions and anyone with a connection to the network may be able to review entries within the blockchain or request new transactions or data be added. Other types of blockchains include private and hybrid (e.g., a combination of public and private) configurations. However, each node typically has access to the transactions recorded making privacy and anonymity difficult to ensure. In addition, the security of the data becomes important as additional information is stored within each block. As such, there are a number of challenges and inefficiencies created in traditional blockchain systems.